/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DTD.Diccionario;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * Clase que encapsula a todos los diccionarios auxiliares existentes
 * @author Administrador
 */
public class Diccionario {

    private ArrayList<IDiccionario> diccionario; //conjunto de los diferentes tipos de diccionarios existentes

    /**
     * Constructor
     */
    public Diccionario() {

        //crea el array y lo carga con todos los tipos de diccionarios
        diccionario = new ArrayList<IDiccionario>();
        diccionario.add(new DiccionarioTipoDato());
        diccionario.add(new DiccionarioAtributo());
        diccionario.add(new DiccionarioElemento());
        diccionario.add(new DiccionarioOcurrenciasElementos());
    }

    /**
     * Este método determina si la cadena recibida por parámetro es una palabra reservada,
     * analizando si existe en alguno de los diccionarios especiales.
     * @param aBuscar String a evaluar
     * @return true si es una palabra reservada, false en caso contrario
     */
    public boolean existe(String aBuscar) {
        boolean resultaro = false;

        for ( Iterator<IDiccionario> it = diccionario.iterator() ; it.hasNext() ; ) {
            IDiccionario dic = it.next();
            if(dic.existe(aBuscar)){
                resultaro = true;
            }
        }
        return resultaro;
    }

    /**
     * Este metodo, de acuerdo a la cadena recibida por parámetro, determina el tipo
     * de diccionario auxiliar correspondiente.
     * @param aBuscar String a evaluar
     * @return tipo de diccionario auxiliar
     */
    public int getTipoDiccionario(String aBuscar){
        int resultado = IDiccionario.ERROR;

        for ( Iterator<IDiccionario> it = diccionario.iterator() ; it.hasNext() ; ) {
            IDiccionario dic = it.next();
            if(dic.existe(aBuscar)){
                resultado = dic.getTipoDiccionario();
            }
        }
        return resultado;
    }
}
